[小ネタ] CodeCommit 承認ルールの承認プール メンバーにIAMロールを加える場合、ロール名だけではダメ
はじめに
大阪オフィスの川原です。
AWS CodeCommitではプルリクエストに承認ルールを付与することが出来ます。 承認ルールを作成することで、一定数以上の承認 もしくは 特定のユーザー/ロールの承認を得た場合のみ マージできるような仕組みを作ることができます。
承認ルール、および承認ルールテンプレートについて詳細は以下参照ください。
結論
「特定のIAMロールからの承認」をマージ可能の条件としたいケースを考えます。
このとき以下組み合わせの承認プールでは ダメです 。
- 承認者のタイプ :: IAM user name or assumed role
- 値 :: IAMロール名のみ
▲ "例" を見る限りできそうなのに・・・
以下のように ワイルドカード を指定するか、 ロール名/スイッチ元ユーザー名
としないといけません。
SomeReviewer/*
(ロール名 + ワイルドカード)*/cm-kawahara.masahiro
(ワイルドカード + スイッチ元 ユーザー名)SomeReviewer/cm-kawahara.masahiro
(ロール/スイッチ元 ユーザー名)
試してみる
上記環境で試してみます。
IAMユーザー cm-kawahara.masahiro
から IAMロール SomeReviewer
にスイッチロールして、
CodeCommit プルリクエストを承認するケースです。
承認ルールとして 4パターン試してみました。
承認ルール名 | 承認プールのメンバー | 備考 |
---|---|---|
BothName | SomeReviewer/cm-kawahara.masahiro |
ロール名/スイッチ元ユーザー名 |
OnlyRoleName | SomeReviewer |
ロール名のみ |
OnlyUserName | cm-kawahara.masahiro |
スイッチ元ユーザー名のみ |
WildcardRoleName | SomeReviewer/* |
ロール名とワイルドカード |
WildcardUserName | */cm-kawahara.masahiro |
スイッチ元ユーザー名とワイルドカード |
結果は以下の通り。 ロール名/スイッチ元ユーザー名
とワイルドカードを使ったルールはルールを満たしましたが、
ロール名 or スイッチ元ユーザー名のみの承認ルールは条件を満たしていません 。
なぜか
承認ルールに関するAWSドキュメントはこちら
This option would not recognize an active session of someone assuming the role of CodeCommitReview with a role session name of Mary_Major ( arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major ) unless you include a wildcard ( *Mary_Major ). You can also specify the role name explicitly ( CodeCommitReview/Mary_Major ).
つまり、ロールのARNが arn:aws:sts::123456789012:assumed-role/CodeCommitReview/Mary_Major
の場合
CodeCommitReview
だけではダメで、 ワイルドカードを使って *Mary_Major
とするか、
厳密に CodeCommitReview/Mary_Major
としないといけないです。
IAMロールのARNについて
ちなみに IAMロールの ARNは以下構文です (参照: IAM 識別子 | AWSドキュメント)。
arn:aws:sts::account-id:assumed-role/role-name/role-session-name
ここの role-name/role-session-name
の部分を CodeCommit 承認ルールでチェックしているわけですね。
role-name
はそのままで、スイッチロールする際のスイッチ先ロールの名前です。
role-session-name
はスイッチロール(AssumeRole)する際のパラメータの 1つで、セッション名を指定します。
マネジメントコンソール上でスイッチロールした際はこの値は スイッチ元のIAMユーザー名
になります。
以上、 ロール名/スイッチ元ユーザー名
としないといけない理由でした。
おわりに
小ネタですが、承認ルールの承認プール メンバーにIAMロールを加える場合の注意点を書いてみました。
少しでもどなたかのお役に立てば幸いです。